﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace AIthin.Neuro
{
    /// <summary>
    /// Interface for all networks
    /// </summary>
    public interface INetwork
    {
        int NeuronsCount { get; }
        int inputsCount { get; }
        int outputsCount { get; }
        int LifeTime { get; }
        List<Layer> layers { get; }

        INeuron this[int index] { get; }
        INetwork Load(string fileName);
        void Save(string fileName);
        int getConnectionsCount();

        void Tick(ref short[,] input, ref int[] inputNeurons, ref int[] Signals);
     
        void learn(float learnWeght);
        void SetInputSignal(int[] inpuNeurons, int[] Signals);
        void groupNeuronsAt(int[] neuronsToGroup, float X, float Y, float Z, float xRange, float yRange);

    }
}
